#ifndef _PACK_IPACKET_H_
#define _PACK_IPACKET_H_

#include "net/net.h"

namespace pack {

class Reader;
class Writer;

class IPacket {
public:
    virtual ~IPacket() {}

public:
    virtual uint32_t GetUri() = 0;

    virtual bool Pack(Writer& writer) = 0;
    virtual bool UnPack(Reader& reader) = 0;

    virtual std::string Dump() = 0;
};

}

#endif
